package com.dbappsecurity.jsbridge.utils;

import android.annotation.SuppressLint;
import android.content.Context;
import android.telephony.TelephonyManager;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;

/**
 * Created by Arirus on 2017/8/16.
 */

public class JsDeviceInfoUtils {
  /**
   * 根据IP地址获取MAC地址
   *
   * @return
   */
  @SuppressLint({"NewApi", "DefaultLocale"})
  public static String getMacAddress() {
    String strMacAddr = null;
    try {
      //获得IpD地址
      InetAddress ip = getLocalInetAddress();
      byte[] b = NetworkInterface.getByInetAddress(ip).getHardwareAddress();
      StringBuffer buffer = new StringBuffer();
      for (int i = 0; i < b.length; i++) {
        if (i != 0) {
          buffer.append(':');
        }
        String str = Integer.toHexString(b[i] & 0xFF);
        buffer.append(str.length() == 1 ? 0 + str : str);
      }
      strMacAddr = buffer.toString().toUpperCase();
    } catch (Exception e) {

    }

    return strMacAddr;
  }

  /**
   * 获取移动设备本地IP
   *
   * @return
   */
  protected static InetAddress getLocalInetAddress() {
    InetAddress ip = null;
    try {
      //列举
      Enumeration<NetworkInterface> en_netInterface = NetworkInterface.getNetworkInterfaces();
      while (en_netInterface.hasMoreElements()) {//是否还有元素
        NetworkInterface ni = (NetworkInterface) en_netInterface.nextElement();//得到下一个元素
        Enumeration<InetAddress> en_ip = ni.getInetAddresses();//得到一个ip地址的列举
        while (en_ip.hasMoreElements()) {
          ip = en_ip.nextElement();
          if (!ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1)
            break;
          else
            ip = null;
        }

        if (ip != null) {
          break;
        }
      }
    } catch (SocketException e) {

      e.printStackTrace();
    }
    return ip;
  }

  public static String getDeviceID(Context context){
    TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
    return manager.getDeviceId();
  }

  /**
   * 获取当前手机系统版本号
   *
   * @return  系统版本号
   */
  public static String getSystemVersion() {
    return "Android"+ android.os.Build.VERSION.RELEASE;
  }

  /**
   * 获取手机型号
   *
   * @return  手机型号
   */
  public static String getMobilePhoneModel() {
    return android.os.Build.MODEL;
  }


}
